/**
 * Interface defining all events a module that wishes to react on RTS Game Events needs to implement. 
 * 
 * @author Paul Redert
 * 
 * author: Paul Redert
 * license: GPLV3
 * 
 * GoldenAK Bot - code.google.com/p/goldenak-bot
 * 
 */

package eu.goldenak.ircbot.game;

public interface Events {
	
	/**
	 * Gets called when the game handling starts.
	 */
	public void onGameStart();
	
	/**
	 * Gets called when the game handling stops.
	 */
	public void onGameStop();
	
	/**
	 * Gets called when a player connects. (You probably should be looking at onPlayerJoin, because this is for handling the initial connection attempt)
	 * @param the player that connects
	 */
	public void onPlayerConnect(Player p);
	
	/**
	 * Gets called when a player joins.
	 * @param p
	 */
	public void onPlayerJoin(Player p);
	
	/**
	 * Gets called when a player disconnects.
	 * @param p the player that disconnects
	 */
	public void onPlayerDisconnect(Player p);
		
	/**
	 * Gets called when a chat message is written. 
	 * Excludes commands (example !info) 
	 * @param p the player that wrote the message
	 * @param Message the message written
	 */
	public void onChatLine(Player p, String message);
	
	/**
	 * Gets called when the map is changed.
	 * @param previous the name of the previous map
	 * @param current the name of the current map
	 */
	public void onMapChange(Map pPrevious, Map pNext);
	
	/**
	 * Gets called when a kill is performed.
	 * @param k
	 */
	public void onKill(Kill k);
	
}
